package main

import "fmt"

// 定义一个usb接口，是一组方法的签名
type usb interface {
	Start()
	Stop()
}

// 手机实现usb接口
type Phone struct {
	Name string
}

func (p Phone) Start() {
	fmt.Println(p.Name, "开始工作")
}
func (p Phone) Stop() {
	fmt.Println(p.Name, "停止工作")
}

// 照相机实现usb接口
type Camera struct {
	Name string
}

func (c Camera) Start() {
	fmt.Println(c.Name, "开始工作")
}
func (c Camera) Stop() {
	fmt.Println(c.Name, "结束工作")
}

func main() {
	// var p1 usb = Phone{"苹果"}
	// var c1 usb = Camera{"尼康"}
	// 是将实现了usb接口设备放到一个切片中，可以统一调用
	device := []usb{
		Phone{"苹果"},
		Camera{"尼康"},
	}
	for _, value := range device {
		value.Start()
		value.Stop()
	}
}
